package com.bincloud.vue.admin.web.service.ums;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bincloud.vue.admin.common.model.dto.response.BasePageResDTO;
import com.bincloud.vue.admin.model.entity.UmsUser;
import com.bincloud.vue.admin.web.dto.ums.user.*;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author bincloud, mvpzhou
 * @since 2022-02-16
 */
public interface IUmsUserService extends IService<UmsUser> {

    /**
     * 用户分页查询
     *
     * @param reqDTO 入参
     * @return 返参
     */
    BasePageResDTO<List<UmsUserPageResDTO>> pageUser(UmsUserPageReqDTO reqDTO);

    /**
     * 用户新增
     *
     * @param reqDTO 入参
     * @return 返参
     */
    boolean saveUser(UmsUserSaveReqDTO reqDTO);

    /**
     * 用户锁定
     *
     * @param reqDTO 入参
     * @return 返参
     */
    boolean lockUser(UmsUserReqDTO reqDTO);

    /**
     * 用户解除锁定
     *
     * @param reqDTO 入参
     * @return 返参
     */
    boolean unlockUser(UmsUserReqDTO reqDTO);

    /**
     * 用户删除
     *
     * @param reqDTO 入参
     * @return 返参
     */
    boolean removeUser(UmsUserReqDTO reqDTO);

    /**
     * 用户重置
     *
     * @param reqDTO 入参
     * @return 返参
     */
    boolean resetUser(UmsUserReqDTO reqDTO);

    /**
     * 获取用户信息
     *
     * @param username 入参 用户名
     * @return 用户信息
     */
    UmsUser getUser(String username);

    /**
     * 更新用户最新登录时间
     * @param username 入参 用户名
     */
    void updateLastLogin(String username);
}
